<?php
// +----------------------------------------------------------------------
// | 萤火商城系统 [ 致力于通过产品和服务，帮助商家高效化开拓市场 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2017~2023 https://www.yiovo.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed 这不是一个自由软件，不允许对程序代码以任何形式任何目的的再发行
// +----------------------------------------------------------------------
// | Author: 萤火科技 <admin@yiovo.com>
// +----------------------------------------------------------------------
declare (strict_types = 1);

namespace app\api\controller;

use app\api\model\User as UserModel;
use app\api\model\UserCoupon as UserCouponModel;
use app\api\service\User as UserService;
use cores\exception\BaseException;
use think\facade\Db;
use think\response\Json;

/**
 * 用户管理
 * Class User
 * @package app\api
 */
class User extends Controller
{
    public function search($mobile = ''): Json
    {
        // 当前用户信息
        $userInfo = Db::name('user')->field('user_id')->where('is_delete', 0)->where('mobile', $mobile)->find();
        if (! $userInfo) {
            return $this->renderSuccess('用户未注册');
        }

        return $this->renderSuccess(compact('userInfo'));
    }
    /**
     * 当前用户详情
     * @return Json
     * @throws BaseException
     */
    public function info(): Json
    {
        // 当前用户信息
        $userInfo = UserService::getCurrentLoginUser(true);
        // 获取用户头像
        $userInfo['avatar'];
        // 获取会员等级
        $userInfo['grade'];

        $clerk = Db::name('store_shop_clerk')
            ->where('user_id', $userInfo['user_id'])->where('is_delete', 0)->where('status', 1)->find();
        $userInfo['role'] = $clerk ? 1 : 0;

        $daili = Db::name('ding_daili')
            ->where('user_id', $userInfo['user_id'])->where('is_delete', 0)->where('status', 1)->find();
        $userInfo['daili'] = $daili ? 1 : 0;

        return $this->renderSuccess(compact('userInfo'));
    }

    public function bankInfo(): Json
    {
        // 当前用户信息
        $userInfo = UserService::getCurrentLoginUser(true);

        $userInfo = UserModel::detail($userInfo['user_id'], ['idcard1File', 'idcard2File']);

        return $this->renderSuccess(compact('userInfo'));
    }

    public function getRole(int $shopId=0): Json
    {
        // 当前用户信息
        $userInfo = UserService::getCurrentLoginUser(false);
        $role     = 0;
        if ($userInfo) {
            // 获取用户头像
            $userInfo['avatar'];
            // 获取会员等级
            $userInfo['grade'];

            $clerk = Db::name('store_shop_clerk')
                ->where('user_id', $userInfo['user_id'])->where('shop_id',$shopId)->where('is_delete', 0)->where('status', 1)->find();
            $role = $clerk ? 1 : 0;
        }
        //$role = 0;
        return $this->renderSuccess(compact('userInfo', 'role'));
    }

    /**
     * 账户资产
     * @return Json
     * @throws BaseException
     */
    public function assets(): Json
    {
        // 当前用户信息
        $userInfo = UserService::getCurrentLoginUser(true);
        // 用户优惠券模型
        $model = new UserCouponModel;
        // 返回数据
        return $this->renderSuccess([
            'assets' => [
                'balance' => $userInfo['balance'],                   // 账户余额
                'points'  => $userInfo['points'],                    // 会员积分
                'coupon'  => $model->getCount($userInfo['user_id']), // 优惠券数量(可用)
            ],
        ]);
    }
    /**
     * 银行绑定
     * @return Json
     * @throws \cores\exception\BaseException
     */
    public function addCard(): Json
    {
        $model = new UserModel;
        if (! $model->addCard($this->postForm())) {
            return $this->renderSuccess($model->getError() ?: '操作失败');
        }
        return $this->renderSuccess('添加成功');
    }

    /**
     * 手机号绑定
     * @return Json
     * @throws \cores\exception\BaseException
     */
    public function bindMobile(): Json
    {
        $model = new UserModel;
        if (! $model->bindMobile($this->postForm())) {
            return $this->renderSuccess($model->getError() ?: '操作失败');
        }
        return $this->renderSuccess('恭喜您，手机号绑定成功');
    }

    /**
     * 修改个人信息（头像昵称）
     * @return Json
     * @throws \cores\exception\BaseException
     */
    public function personal(): Json
    {
        $model = new UserModel;
        if (! $model->personal($this->postForm())) {
            return $this->renderSuccess($model->getError() ?: '操作失败');
        }
        return $this->renderSuccess('恭喜您，信息修改成功');
    }

       //绑定手机号-公众号
    public function bind(): Json
    {
      

        $model = new UserModel;
        if (! $model->bind($this->postForm())) {
            return $this->renderSuccess($model->getError() ?: '操作失败');
        }

        return $this->renderSuccess([]);
    }
}
